package string;
/*String的演示*/
public class StringDemo {
    public static void main(String[] args) {
        String s = new String("hello");//创建了2个对象
        String s1 = "hello";//复用常量池中的字面量对象
        System.out.println(s==s1);//false 比较的是地址是否相同

        //在实际应用中，String比较相等一般都是比较字符串的内容是否相同
        //因此我们需要使用equals（）方法来比较两个字符串内容是否相同
        System.out.println(s.equals(s1));//true，equals（）比较的是内容是否相同



//        /*
//        使用字面量（“”）来创建字符串对象时，JVM会检查常量池中是否有该对象
//        1）若没有，则会创建字符串对象，将其引用存入到常量池中
//        2）若有，则会直接将常量池中的对象（引进）返回，并不会创建新的字符串对象
//         */
//        String s1 = "123abc";//对中创建123abc字符量对象，并缓存到常量池中
//        //编译器在编译时，若发现是两个字面量相连，则会直接连接好并将结果保存起来
//        //如下语句会被编译为：String s2 = “123abc”；
//        String s2 = "123"+"abc";
//        System.out.println(s1==s2);//true
//
//        String s3 = "123";
//        //因为s3是一个变量，所以在编译期并不会直接编译好
//        String s4 = s3+"abc";//创建一个新的对象存储123abc
//        System.out.println(s1==s4);//false
    }
}
